package com.macro.mall.dao;

import com.macro.mall.dto.PmsOutProductSkuDto;
import com.macro.mall.dto.PmsProductDTO;
import com.macro.mall.dto.PmsSkuStockDTO;
import com.macro.mall.dto.VeProductParam;
import com.macro.mall.model.OmsOrderItem;
import com.macro.mall.model.PmsSkuStock;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 自定义商品SKU管理Dao
 */
public interface PmsSkuStockDao {
    /**
     * 批量插入操作
     */
    int insertList(@Param("list")List<PmsSkuStock> skuStockList);

    /**
     * 批量插入或替换操作
     */
    int replaceList(@Param("list")List<PmsSkuStock> skuStockList);

    /**
     * 批量修改操作
     */
    int updateList(@Param("itemList")List<PmsSkuStock> skuStockList);

    /**
     * 查询店铺集合下的预警货品
     * @param stoIds
     * @return
     */
    Integer slelectCount(@Param("stoIds") List<Long> stoIds);

    /**
     * 查询库存预警数量
     * @param storeId
     * @return
     */
    Integer selectLowStockCount(@Param("storeId") Long storeId);

    /**
     * 查询库存预警数量
     * @param storeIds
     * @return
     */
    Integer selectLowStordsStockCount(@Param("storeIds") List<Long> storeIds);

    /**
     * 查询首页商品统计信息
     * @param storeId
     * @param value
     * @return
     */
    Integer selectIndexProductStatistics(@Param("storeId") Long storeId,@Param("value") Integer value);

    /**
     * 查询首页商品统计信息
     * @param storeIds
     * @param value
     * @return
     */
    Integer selectIndexStordsProductStatistics(@Param("storeIds") List<Long> storeIds,@Param("value") Integer value);

    /**
     * 查寻出库商品列表
     * @param storeId
     * @return
     */
    List<PmsOutProductSkuDto> selectPmsSkuStockOutProduct(@Param("storeId")Long storeId,@Param("productName")String productName,@Param("judgeStock")Integer judgeStock,@Param("param") VeProductParam param);

    /**
     * 以sku为单位获取商品sku列表
     * @author zhouboyu
     * @Date 2020年10月28日
     * @param storeId
     * @param productName
     * @return
     */
    List<PmsProductDTO> selectForActivity(@Param("storeId")Long storeId, @Param("productName")String productName);

    /**
     * 解除取消订单的库存锁定
     */
    int releaseSkuStockLock(@Param("itemList") List<OmsOrderItem> orderItemList);
    /**
     * 查询商品SKU信息
     * @author zhouboyu
     * @Date 2020年10月28日
     * @param productId
     * @return
     */
    List<PmsSkuStock> selectSkuForActivity(@Param("productId")Long productId);
}
